/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.nxlv2.nomad.accessdb.services;

import com.nxlv2.nomad.accessdb.dao.IUtilisateurDao;
import com.nxlv2.nomad.accessdb.dao.jdbc.JdbcUtilisateurDao;
import com.nxlv2.nomad.businessobjects.Client;
import com.nxlv2.nomad.businessobjects.Satisfaction;
import com.nxlv2.nomad.businessobjects.Utilisateur;
import java.util.List;

/**
 *
 * @author Administrateur
 */
public class UtilisateurServices {
    
    private static final IUtilisateurDao dao = new JdbcUtilisateurDao();    

    /**
     * 
     * @param utilisateur
     * @throws ServiceException 
     */
    public void create(Utilisateur utilisateur) throws ServiceException {        
        dao.saveUtilisateur(utilisateur);
   
    }
    
    /**
     * 
     * @param utilisateur
     * @throws ServiceException 
     */
    public void update(Utilisateur utilisateur) throws ServiceException {
        dao.updateUtilisateur(utilisateur);
    }
    
    /**
     * 
     * @param utilisateur
     * @throws ServiceException 
     */
    public void delete(Utilisateur utilisateur) throws ServiceException {
        dao.deleteUtilisateur(utilisateur.getIdAppli());
    }
    
    /**
     * 
     * @param id
     * @return Utilisateur
     * @throws ServiceException 
     */
    public Utilisateur get(int id) throws ServiceException {
        return dao.findById(id);
    }
    public Utilisateur get(String email) throws ServiceException {
        return dao.findByEmail(email);
    }
    /**
     * 
     * @param utilisateur
     * @return bool
     */
    public boolean verifierConnection(Utilisateur utilisateur){
        return dao.verifierConnection(utilisateur);
    }
    
    /**
     * 
     * @param utilisateur
     * @return List<Client>
     * @throws ServiceException 
     */
    public List<Client> getClients(Utilisateur utilisateur) throws ServiceException {
        return dao.getClientsParUtilisateur(utilisateur);
    }
    /**
     * 
     * @param utilisateur
     * @return
     * @throws ServiceException 
     */
    public List<Satisfaction> getSatisfaction(Utilisateur utilisateur) throws ServiceException {
        return dao.getSatisfactionsParUtilisateur(utilisateur);
    }
    
    /**
     * 
     * @param utilisateur
     * @return List<Client>
     * @throws ServiceException 
     */
    public List<Client> getClientsMaj(Utilisateur utilisateur) throws ServiceException {
        return dao.getClientsMajParUtilisateur(utilisateur);
    }
    
    /**
     * 
     * @param utilisateur
     * @return List<String>
     * @throws ServiceException 
     */
    public String[] getNameClients(Utilisateur utilisateur)throws ServiceException {
        List<Client> clients = this.getClients(utilisateur);
        
        int nbClient = clients.size();
        String[] names = new String[nbClient];
        for (int i=0; i < nbClient; i++ ) {  
            names[i] = clients.get(i).getNom();
        }
        return names;
    }
    
    /**
     * 
     * @param client
     * @param utilisateur
     * @throws ServiceException 
     */
    public void linkClient (Client client ,Utilisateur utilisateur) throws ServiceException {
        dao.lierClientAUtilisateur(client, utilisateur);
    }
}
